💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    7. 사용자 모델 확장 | ✅ 저자: 이유정(박사)

    Django에서 제공하는 내장 인증 URL(auth view) 을 사용하는 방법

    from django.urls import path, include
    
    urlpatterns = [
        path('accounts/', include('django.contrib.auth.urls')),
    ]
    

    위의 코드처럼 urls.py에 django.contrib.auth.urls를 추가하면, Django가 django.contrib.auth.urls 안에 미리 정의해 놓은 URL 패턴들을 한꺼번에 가져와서 자동으로 다음과 같은 경로들이 등록됩니다:

    • include('django.contrib.auth.urls')는 Django가 기본 제공하는 인증 관련 URL과 뷰 세트를 한 번에 가져다 쓰는 방법
    • accounts/처럼 접두사를 붙이면, 해당 패턴들 모두 accounts/... 경로로 접근 가능
    • 로그인·로그아웃·비밀번호 변경/재설정 기능을 코드 한 줄로 활성화할 수 있습니다.

    템플릿 파일은 직접 만들어야 합니다. registration/login.html, registration/password_reset_form.html

    LOGIN_URL, LOGIN_REDIRECT_URL, LOGOUT_REDIRECT_URL 같은 설정은 settings.py에서 필요에 따라 조정해야 합니다.

    urls.py

    • django.contrib.auth가 제공하는 login, logout, password_change, password_reset 등 기본 URL 패턴을 한 번에 accounts/ 아래로 가져다 등록해 줍니다.

    Django 기본 User 모델과 추가 정보를 담을 UserProfile 을 1:1 관계(OneToOneField) 로 연결한다는 개념도

    accounts/urls.py

    from django.contrib.auth import views as auth_views
    
    urlpatterns = [
        path('login/',
             auth_views.LoginView.as_view(template_name='login.html'),
             name='login'),
        path('logout/',
             auth_views.LogoutView.as_view(),
             name='logout'),
        path('change-password/',
             auth_views.PasswordChangeView.as_view(
                 template_name='change-password.html'),
             name='change-password'),
    ]
    
    • 필요한 URL만 골라내어
    • 커스텀 템플릿(template_name=…)을 지정해 등록하는 예시입니다.

    templates/accounts/profile.html

    <h1>사용자 정보</h1>
    <p>Username:{{ user.username }}</p>
    <p>소개:{{ user.userprofile.bio }}</p>
    <p>위치:{{ user.userprofile.location }}</p>
    <p>생일:{{ user.userprofile.birth_date }}</p>
    
    • {{ user.userprofile }} 로 OneToOne으로 연결된 프로필에 접근
    • 추가로 만든 bio, location, birth_date 값을 손쉽게 출력

    전체 흐름 요약:

    urls.py
     ├─ include('django.contrib.auth.urls')  ← 기본 auth URL 일괄 등록
     └─ path('login/…'), path('logout/…'), … ← 필요 뷰만 골라 커스텀 등록
    
              ↓
    
    모델 설계(models.py)
     └─ UserProfile ←→ User (OneToOne)
    
              ↓
    
    시그널 설정(models.py)
     └─ post_save → UserProfile 자동 생성/저장
    
              ↓
    
    템플릿(profile.html)
     └─ {{ user.userprofile.bio }} 등으로 추가 필드 사용
    

    이렇게 하면 Django 기본 인증에 추가 정보를 결합해, 로그인/로그아웃부터 사용자 프로필 관리까지 한 사이클로 처리할 수 있습니다.

    TOP
    preload preload